home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / python2.4 / methodobject.h < prev    next >
Encoding:
C/C++ Source or Header  |  2005-10-18  |  3.1 KB  |  92 lines

  1.  
  2. /* Method object interface */
  3.  
  4. #ifndef Py_METHODOBJECT_H
  5. #define Py_METHODOBJECT_H
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9.  
  10. /* This is about the type 'builtin_function_or_method',
  11.    not Python methods in user-defined classes.  See classobject.h
  12.    for the latter. */
  13.  
  14. PyAPI_DATA(PyTypeObject) PyCFunction_Type;
  15.  
  16. #define PyCFunction_Check(op) ((op)->ob_type == &PyCFunction_Type)
  17.  
  18. typedef PyObject *(*PyCFunction)(PyObject *, PyObject *);
  19. typedef PyObject *(*PyCFunctionWithKeywords)(PyObject *, PyObject *,
  20.                          PyObject *);
  21. typedef PyObject *(*PyNoArgsFunction)(PyObject *);
  22.  
  23. PyAPI_FUNC(PyCFunction) PyCFunction_GetFunction(PyObject *);
  24. PyAPI_FUNC(PyObject *) PyCFunction_GetSelf(PyObject *);
  25. PyAPI_FUNC(int) PyCFunction_GetFlags(PyObject *);
  26.  
  27. /* Macros for direct access to these values. Type checks are *not*
  28.    done, so use with care. */
  29. #define PyCFunction_GET_FUNCTION(func) \
  30.         (((PyCFunctionObject *)func) -> m_ml -> ml_meth)
  31. #define PyCFunction_GET_SELF(func) \
  32.     (((PyCFunctionObject *)func) -> m_self)
  33. #define PyCFunction_GET_FLAGS(func) \
  34.     (((PyCFunctionObject *)func) -> m_ml -> ml_flags)
  35. PyAPI_FUNC(PyObject *) PyCFunction_Call(PyObject *, PyObject *, PyObject *);
  36.  
  37. struct PyMethodDef {
  38.     char    *ml_name;    /* The name of the built-in function/method */
  39.     PyCFunction  ml_meth;    /* The C function that implements it */
  40.     int         ml_flags;    /* Combination of METH_xxx flags, which mostly
  41.                    describe the args expected by the C func */
  42.     char    *ml_doc;    /* The __doc__ attribute, or NULL */
  43. };
  44. typedef struct PyMethodDef PyMethodDef;
  45.  
  46. PyAPI_FUNC(PyObject *) Py_FindMethod(PyMethodDef[], PyObject *, char *);
  47.  
  48. #define PyCFunction_New(ML, SELF) PyCFunction_NewEx((ML), (SELF), NULL)
  49. PyAPI_FUNC(PyObject *) PyCFunction_NewEx(PyMethodDef *, PyObject *, 
  50.                      PyObject *);
  51.  
  52. /* Flag passed to newmethodobject */
  53. #define METH_OLDARGS  0x0000
  54. #define METH_VARARGS  0x0001
  55. #define METH_KEYWORDS 0x0002
  56. /* METH_NOARGS and METH_O must not be combined with the flags above. */
  57. #define METH_NOARGS   0x0004
  58. #define METH_O        0x0008
  59.  
  60. /* METH_CLASS and METH_STATIC are a little different; these control
  61.    the construction of methods for a class.  These cannot be used for
  62.    functions in modules. */
  63. #define METH_CLASS    0x0010
  64. #define METH_STATIC   0x0020
  65.  
  66. /* METH_COEXIST allows a method to be entered eventhough a slot has
  67.    already filled the entry.  When defined, the flag allows a separate
  68.    method, "__contains__" for example, to coexist with a defined 
  69.    slot like sq_contains. */
  70.  
  71. #define METH_COEXIST   0x0040
  72.  
  73. typedef struct PyMethodChain {
  74.     PyMethodDef *methods;        /* Methods of this type */
  75.     struct PyMethodChain *link;    /* NULL or base type */
  76. } PyMethodChain;
  77.  
  78. PyAPI_FUNC(PyObject *) Py_FindMethodInChain(PyMethodChain *, PyObject *,
  79.                                                   char *);
  80.  
  81. typedef struct {
  82.     PyObject_HEAD
  83.     PyMethodDef *m_ml; /* Description of the C function to call */
  84.     PyObject    *m_self; /* Passed as 'self' arg to the C func, can be NULL */
  85.     PyObject    *m_module; /* The __module__ attribute, can be anything */
  86. } PyCFunctionObject;
  87.  
  88. #ifdef __cplusplus
  89. }
  90. #endif
  91. #endif /* !Py_METHODOBJECT_H */
  92.